Spring Data JPA এর বেসিক ধারণা

Java Technologies - স্প্রিং বুট ওআরএম (Spring Boot ORM)
173

স্প্রিং ডেটা JPA হলো স্প্রিং ফ্রেমওয়ার্কের একটি মডিউল, যা Java Persistence API (JPA) এর ওপরে নির্মিত। এটি ডেটাবেস অপারেশনকে আরও সহজ করে তোলে এবং ডেটাবেজ অ্যাক্সেস লেয়ার তৈরি করতে ডেভেলপারদের জন্য একটি রেডিমেড সল্যুশন প্রদান করে। স্প্রিং ডেটা JPA ব্যবহার করলে ডেটাবেসের সাথে কাজ করার জন্য ম্যানুয়াল SQL কোয়েরি লেখার প্রয়োজন হয় না, বরং সরল এবং সংক্ষিপ্ত কোড দিয়ে CRUD অপারেশন করা যায়।


স্প্রিং ডেটা JPA কীভাবে কাজ করে?

স্প্রিং ডেটা JPA সরাসরি JPA (Java Persistence API) এবং Hibernate-এর মতো ইমপ্লিমেন্টেশনগুলোর সাথে ইন্টিগ্রেটেড হয়। এটি এমন একটি স্ট্রাকচার প্রদান করে, যেখানে ডেভেলপাররা ডেটাবেস অপারেশন করার জন্য বিভিন্ন বিল্ট-ইন মেথড ব্যবহার করতে পারেন।

স্প্রিং ডেটা JPA এর প্রধান বৈশিষ্ট্য হলো Repository ইন্টারফেস, যা CRUD অপারেশন এবং কাস্টম কোয়েরি জেনারেশনের সুবিধা দেয়।


স্প্রিং ডেটা JPA ব্যবহারের সুবিধা

  • CRUD অপারেশন সহজ করে: বিল্ট-ইন মেথডের মাধ্যমে ডেটা তৈরি (Create), পড়া (Read), আপডেট (Update), এবং মুছা (Delete) করা যায়।
  • কাস্টম কোয়েরি: কাস্টম মেথড ডিফাইন করে ডেটাবেজে নির্দিষ্ট ধরণের অপারেশন করা যায়।
  • ডেটাবেজ স্বাধীনতা: বিভিন্ন ডেটাবেসের সাথে কাজ করার ক্ষমতা।
  • প্লাগ-এন্ড-প্লে ফিচার: খুব সহজে প্রজেক্টে যোগ করা যায়।
  • স্বয়ংক্রিয় SQL কোয়েরি জেনারেশন: ম্যানুয়াল SQL লেখার প্রয়োজন নেই।

স্প্রিং ডেটা JPA সেটআপ

Maven ডিপেনডেন্সি:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
    <groupId>com.h2database</groupId>
    <artifactId>h2</artifactId>
    <scope>runtime</scope>
</dependency>

Gradle ডিপেনডেন্সি:

implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
runtimeOnly 'com.h2database:h2'

Entity ক্লাস তৈরির উদাহরণ

ডেটাবেজ টেবিলের সাথে সম্পর্কিত একটি Entity ক্লাস তৈরি করা হয়।

import jakarta.persistence.Entity;
import jakarta.persistence.Id;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.GenerationType;

@Entity
public class Product {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    private String name;
    private Double price;

    // Getters and Setters
    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Double getPrice() {
        return price;
    }

    public void setPrice(Double price) {
        this.price = price;
    }
}

Repository ইন্টারফেস তৈরি

স্প্রিং ডেটা JPA-তে, JpaRepository ইন্টারফেস ব্যবহার করে ডেটাবেজ অপারেশনের জন্য একটি Repository তৈরি করা হয়।

import org.springframework.data.jpa.repository.JpaRepository;

public interface ProductRepository extends JpaRepository<Product, Long> {
    // কাস্টম মেথড ডিফাইন করা যেতে পারে
}

Service ক্লাস তৈরি

ব্যবসায়িক লজিক পরিচালনার জন্য একটি Service ক্লাস তৈরি করা হয়।

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

@Service
public class ProductService {

    @Autowired
    private ProductRepository repository;

    public List<Product> getAllProducts() {
        return repository.findAll();
    }

    public Product saveProduct(Product product) {
        return repository.save(product);
    }

    public void deleteProduct(Long id) {
        repository.deleteById(id);
    }
}

Controller ক্লাস তৈরি

API তৈরি করার জন্য একটি RestController ব্যবহার করা হয়।

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

@RestController
@RequestMapping("/products")
public class ProductController {

    @Autowired
    private ProductService service;

    @GetMapping
    public List<Product> getAllProducts() {
        return service.getAllProducts();
    }

    @PostMapping
    public Product addProduct(@RequestBody Product product) {
        return service.saveProduct(product);
    }

    @DeleteMapping("/{id}")
    public void deleteProduct(@PathVariable Long id) {
        service.deleteProduct(id);
    }
}

স্প্রিং ডেটা JPA কনফিগারেশন

application.properties ফাইলটি কনফিগার করে ডেটাবেস সংযোগ স্থাপন করা হয়।

spring.datasource.url=jdbc:h2:mem:testdb
spring.datasource.username=sa
spring.datasource.password=
spring.jpa.hibernate.ddl-auto=update
spring.jpa.show-sql=true

স্প্রিং ডেটা JPA এর কাজের ধরণ

  1. Entity ক্লাস তৈরি: ডেটাবেস টেবিলের জন্য ক্লাস তৈরি করুন।
  2. Repository ইন্টারফেস: ডেটাবেজ অপারেশনের জন্য JpaRepository ইন্টারফেস তৈরি করুন।
  3. Service লেয়ার: ব্যবসায়িক লজিক লিখুন।
  4. Controller লেয়ার: API এক্সপোজ করুন।
  5. Configuration ফাইল: ডেটাবেস সংযোগ কনফিগার করুন।

স্প্রিং ডেটা JPA ব্যবহার করে ডেটাবেজ অপারেশন সহজ, দ্রুত এবং কোড পুনর্ব্যবহারযোগ্য হয়। এটি ডেভেলপারদের সময় সাশ্রয় করে এবং অ্যাপ্লিকেশন ডেভেলপমেন্টে আরও কার্যকারিতা যোগ করে।

Content added By

Spring Data JPA কি এবং এর প্রয়োজনীয়তা

226

Spring Data JPA হলো স্প্রিং ফ্রেমওয়ার্কের একটি সাব-প্রজেক্ট, যা Java Persistence API (JPA) এবং Hibernate এর উপর ভিত্তি করে কাজ করে। এটি ডেটাবেস পরিচালনার জন্য একটি শক্তিশালী এবং সরলীকৃত পদ্ধতি সরবরাহ করে। Spring Data JPA ডেভেলপারদের জন্য রেপোজিটরি (Repository) প্যাটার্ন ব্যবহার করে ডেটাবেস অপারেশন সহজ করে দেয়।

Spring Data JPA মূলত ডেটাবেসের সঙ্গে ইন্টারঅ্যাকশনের জন্য রেডিমেড এবং কাস্টমাইজড রেপোজিটরি ইন্টারফেস তৈরি করতে সহায়তা করে।


Spring Data JPA এর প্রয়োজনীয়তা

Spring Data JPA ব্যবহারের পেছনে কিছু গুরুত্বপূর্ণ কারণ রয়েছে, যা এর প্রয়োজনীয়তা ব্যাখ্যা করে:

ডেটাবেস অপারেশন সহজ করা

Spring Data JPA স্বয়ংক্রিয়ভাবে CRUD (Create, Read, Update, Delete) অপারেশন পরিচালনা করে। এতে ডেভেলপারদের হাতে-কলমে SQL কোয়েরি লেখার প্রয়োজন হয় না।

রেপোজিটরি প্যাটার্ন সমর্থন

রেপোজিটরি প্যাটার্নের মাধ্যমে ডেটা ম্যানেজমেন্ট সহজ হয়। Spring Data JPA-তে JpaRepository বা CrudRepository ইন্টারফেস ব্যবহার করে সহজেই ডেটাবেস অপারেশন সম্পন্ন করা যায়।

SQL কোয়েরি অটোমেশন

Spring Data JPA স্বয়ংক্রিয়ভাবে SQL কোয়েরি জেনারেট করতে পারে। ডেভেলপাররা শুধুমাত্র কিছু নির্দিষ্ট মেথড ডিফাইন করলেই যথেষ্ট।

প্যাগিনেশন এবং সোর্টিং

Spring Data JPA প্যাগিনেশন এবং সোর্টিংয়ের মতো ফিচার বিল্ট-ইন সমর্থন করে, যা বড় ডেটাবেস থেকে ডেটা রিটার্ন করার সময় কার্যকর।

কাস্টম কোয়েরি সমর্থন

ডেটাবেসের জটিল অপারেশনের জন্য কাস্টম SQL কোয়েরি লেখারও সুযোগ রয়েছে।


Spring Data JPA এর সুবিধা

  • দ্রুত ডেভেলপমেন্ট: SQL কোয়েরি লেখার ঝামেলা দূর করে দ্রুত অ্যাপ্লিকেশন ডেভেলপমেন্ট সম্ভব হয়।
  • রিডুসড কোড: ডেটাবেস অপারেশনের জন্য অনেক কম কোড লিখতে হয়।
  • ইন্টিগ্রেশন সহজ: Spring Boot অ্যাপ্লিকেশনের সঙ্গে সহজেই ইন্টিগ্রেট করা যায়।
  • রক্ষণাবেক্ষণ সহজ: রেপোজিটরি প্যাটার্নের কারণে কোড মেইনটেন করা সহজ হয়।

উদাহরণ: Spring Data JPA এর ব্যবহার

JpaRepository ইন্টারফেস

import org.springframework.data.jpa.repository.JpaRepository;

public interface UserRepository extends JpaRepository<User, Long> {
}

কাস্টম কোয়েরি উদাহরণ

import org.springframework.data.jpa.repository.Query;

public interface UserRepository extends JpaRepository<User, Long> {
    @Query("SELECT u FROM User u WHERE u.name = ?1")
    List<User> findByName(String name);
}

সার্ভিস লেভেলে ব্যবহার

@Service
public class UserService {
    private final UserRepository userRepository;

    public UserService(UserRepository userRepository) {
        this.userRepository = userRepository;
    }

    public List<User> getAllUsers() {
        return userRepository.findAll();
    }
}

Spring Data JPA ডেটাবেস ম্যানেজমেন্টকে দ্রুত, সহজ এবং কার্যকর করে তোলে। এটি ডেভেলপারদের সময় সাশ্রয় করে এবং তাদের ডেটাবেস অপারেশনকে আরও কার্যকরভাবে সম্পন্ন করার সুযোগ দেয়।

Content added By

JPA Repository Interface এর ব্যবহার

185

JPA Repository Interface কি?

Spring Boot এর JPA Repository হলো একটি ইন্টারফেস যা Spring Data JPA প্রদান করে। এটি ডেটাবেসে সাধারণ CRUD (Create, Read, Update, Delete) অপারেশন সহজে সম্পন্ন করতে সাহায্য করে। JPA Repository স্বয়ংক্রিয়ভাবে প্রয়োজনীয় SQL কুয়েরি জেনারেট করে, ফলে ডেভেলপারদের কুয়েরি লেখার প্রয়োজন হয় না।

JPA Repository এর বৈশিষ্ট্য

  • স্বয়ংক্রিয় SQL অপারেশন: CRUD অপারেশনের জন্য SQL কুয়েরি স্বয়ংক্রিয়ভাবে তৈরি হয়।
  • কাস্টম কুয়েরি সাপোর্ট: প্রয়োজন হলে মেথডের নামের ভিত্তিতে কাস্টম কুয়েরি তৈরি করা যায়।
  • পেজিনেশন এবং সোর্টিং সাপোর্ট: ডেটা পেজিনেট এবং সোর্ট করার জন্য বিল্ট-ইন মেথড প্রদান করে।

JPA Repository Interface তৈরি

Spring Boot এ JPA Repository তৈরি করতে JpaRepository ইন্টারফেসটি এক্সটেন্ড করতে হয়। উদাহরণস্বরূপ:

import org.springframework.data.jpa.repository.JpaRepository;

public interface ProductRepository extends JpaRepository<Product, Long> {
    // কাস্টম মেথড প্রয়োজনে এখানে ডিক্লেয়ার করুন।
}

এখানে:

  • Product হলো Entity ক্লাস যা ডেটাবেস টেবিলের প্রতিনিধিত্ব করে।
  • Long হলো প্রাইমারি কি (Primary Key) এর ডেটা টাইপ।

JPA Repository এর সাধারণ CRUD অপারেশন

১. ডেটা সেভ করা (Save Data)

save() মেথড ব্যবহার করে নতুন ডেটা ডেটাবেসে যুক্ত করা যায়:

Product product = new Product();
product.setName("Laptop");
product.setPrice(80000.0);
productRepository.save(product);

২. ডেটা রিড করা (Read Data)

findById() মেথড ব্যবহার করে নির্দিষ্ট একটি রেকর্ড রিড করা যায়:

Optional<Product> product = productRepository.findById(1L);
product.ifPresent(System.out::println);

findAll() মেথড ব্যবহার করে সমস্ত ডেটা রিড করা যায়:

List<Product> products = productRepository.findAll();
products.forEach(System.out::println);

৩. ডেটা আপডেট করা (Update Data)

save() মেথড ব্যবহার করে বিদ্যমান রেকর্ড আপডেট করা যায়:

Product existingProduct = productRepository.findById(1L).orElse(null);
if (existingProduct != null) {
    existingProduct.setPrice(85000.0);
    productRepository.save(existingProduct);
}

৪. ডেটা ডিলিট করা (Delete Data)

deleteById() মেথড ব্যবহার করে নির্দিষ্ট রেকর্ড ডিলিট করা যায়:

productRepository.deleteById(1L);

deleteAll() মেথড ব্যবহার করে সমস্ত ডেটা ডিলিট করা যায়:

productRepository.deleteAll();

কাস্টম কুয়েরি তৈরি

JPA Repository এর মাধ্যমে মেথডের নামের ভিত্তিতে কাস্টম কুয়েরি তৈরি করা যায়। উদাহরণস্বরূপ:

১. নির্দিষ্ট নামের ভিত্তিতে রেকর্ড রিড করা

List<Product> findByName(String name);

ব্যবহার:

List<Product> products = productRepository.findByName("Laptop");

২. প্রাইসের সীমার মধ্যে রেকর্ড খুঁজে আনা

List<Product> findByPriceBetween(Double minPrice, Double maxPrice);

ব্যবহার:

List<Product> products = productRepository.findByPriceBetween(50000.0, 100000.0);

পেজিনেশন এবং সোর্টিং

JPA Repository পেজিনেশন এবং সোর্টিং সাপোর্ট করে।

পেজিনেশন উদাহরণ

import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest;

Page<Product> page = productRepository.findAll(PageRequest.of(0, 5)); // প্রথম পেজ, প্রতি পেজে ৫টি রেকর্ড
page.getContent().forEach(System.out::println);

সোর্টিং উদাহরণ

import org.springframework.data.domain.Sort;

List<Product> products = productRepository.findAll(Sort.by(Sort.Direction.ASC, "price"));
products.forEach(System.out::println);

JPA Repository ব্যবহারের সুবিধা

  • ডেটাবেস অপারেশন সহজে সম্পন্ন করা যায়।
  • ম্যানুয়াল SQL কোড লেখার প্রয়োজন নেই।
  • পেজিনেশন এবং সোর্টিংয়ের জন্য বিল্ট-ইন সাপোর্ট।
  • ডেটা অ্যাক্সেস লেয়ার মডুলার এবং রিইউজেবল হয়।

JPA Repository এর সীমাবদ্ধতা

  • জটিল কুয়েরির জন্য হাইব্রিড সমাধান দরকার হতে পারে (e.g., Native Query বা Criteria API)।
  • বড় ডেটাসেটের ক্ষেত্রে কার্যকারিতা (Performance) হ্রাস পেতে পারে।

Content added By

CrudRepository এবং JpaRepository এর মধ্যে পার্থক্য

164

স্প্রিং ডেটা জেপিএ (Spring Data JPA) এ দুটি গুরুত্বপূর্ণ ইন্টারফেস হলো CrudRepository এবং JpaRepository। এ দুটি ইন্টারফেস ডেটাবেস অপারেশন পরিচালনার জন্য ব্যবহৃত হয়। যদিও তারা উভয়ই ডেটা অ্যাক্সেস লেয়ারকে সহজতর করে, তাদের মধ্যে কিছু পার্থক্য রয়েছে।


CrudRepository কি?

CrudRepository একটি মৌলিক ইন্টারফেস যা CRUD (Create, Read, Update, Delete) অপারেশন সহজ করার জন্য ব্যবহৃত হয়। এটি স্প্রিং ডেটা ফ্রেমওয়ার্কের অংশ এবং সহজ ডেটা অ্যাক্সেস লেয়ার তৈরি করতে সাহায্য করে।

CrudRepository-এর বৈশিষ্ট্য

  • ডেটাবেসের CRUD অপারেশন পরিচালনা করে।
  • ডেটা রিড এবং ম্যানিপুলেট করার জন্য মৌলিক মেথড প্রদান করে।
  • Pagination বা Batch Processing সরাসরি সমর্থন করে না।
  • অপেক্ষাকৃত সহজ এবং মৌলিক ব্যবহারের জন্য উপযোগী।

JpaRepository কি?

JpaRepository হলো CrudRepository-এর একটি এক্সটেনশন, যা জেপিএ (JPA) স্পেসিফিক ফিচারসমূহ সমর্থন করে। এটি CRUD অপারেশনের পাশাপাশি অ্যাডভান্সড ডেটাবেস অপারেশন (যেমন Pagination, Sorting) এর সুবিধা প্রদান করে।

JpaRepository-এর বৈশিষ্ট্য

  • CRUD অপারেশনের পাশাপাশি JPA-স্পেসিফিক ফিচার সমর্থন করে।
  • Pagination এবং Sorting সমর্থন করে।
  • বড় স্কেল ডেটা অপারেশনের জন্য আরও কার্যকর।
  • ডেটা অ্যাক্সেস লেয়ার আরও কাস্টমাইজ করতে দেয়।

CrudRepository এবং JpaRepository এর মধ্যে পার্থক্য

বৈশিষ্ট্যCrudRepositoryJpaRepository
ইন্টারফেসের বেসCrudRepository ইন্টারফেসCrudRepository এবং PagingAndSortingRepository এক্সটেন্ড করে।
CRUD অপারেশনমৌলিক CRUD অপারেশন সমর্থন করে।CRUD-এর পাশাপাশি JPA-স্পেসিফিক অপারেশন সমর্থন করে।
Pagination এবং Sortingসরাসরি সমর্থন করে না।Pagination এবং Sorting সরাসরি সমর্থন করে।
অ্যাডভান্সড অপারেশনমৌলিক অপারেশনের জন্য উপযোগী।অ্যাডভান্সড এবং জটিল অপারেশন সহজতর করে।
ব্যবহারিক জটিলতাসহজ এবং ছোট অ্যাপ্লিকেশনের জন্য কার্যকর।বড় এবং জটিল অ্যাপ্লিকেশনের জন্য কার্যকর।
জেপিএ ফিচার সমর্থনজেপিএ স্পেসিফিক ফিচার সমর্থন করে না।জেপিএ স্পেসিফিক ফিচার (যেমন Flush, Batch Processing) সমর্থন করে।

কোনটি ব্যবহার করবেন?

  • CrudRepository: যদি অ্যাপ্লিকেশন ছোট হয় এবং শুধুমাত্র মৌলিক CRUD অপারেশন পরিচালনার প্রয়োজন হয়।
  • JpaRepository: যদি অ্যাপ্লিকেশন বড় হয় বা Pagination, Sorting, এবং জেপিএ ফিচারের প্রয়োজন হয়।

উদাহরণ

CrudRepository উদাহরণ

import org.springframework.data.repository.CrudRepository;

public interface UserRepository extends CrudRepository<User, Long> {
    // শুধু মৌলিক CRUD অপারেশন
}

JpaRepository উদাহরণ

import org.springframework.data.jpa.repository.JpaRepository;

public interface UserRepository extends JpaRepository<User, Long> {
    // Pagination এবং Sorting সহ অ্যাডভান্সড অপারেশন
}

সারমর্ম

CrudRepository এবং JpaRepository উভয়ই ডেটাবেস অপারেশন পরিচালনার জন্য কার্যকর ইন্টারফেস। তবে, JpaRepository CrudRepository-এর উপর ভিত্তি করে আরও উন্নত এবং স্কেলেবল অপশন সরবরাহ করে, যা বড় ও জটিল অ্যাপ্লিকেশনের জন্য বেশি উপযোগী।

Content added By

উদাহরণ সহ Spring Data JPA এর বেসিক টিউটোরিয়াল

168

Spring Data JPA কী?

Spring Data JPA হলো Spring ফ্রেমওয়ার্কের একটি অংশ, যা JPA (Java Persistence API) এর ওপর ভিত্তি করে ডেটাবেসের ডেটা অ্যাক্সেস অপারেশনকে সহজতর করে। এটি কম কোড লিখে CRUD (Create, Read, Update, Delete) অপারেশন করার জন্য উপযোগী এবং ডেটাবেসের সাথে কাজ করার জন্য একটি শক্তিশালী ইন্টারফেস সরবরাহ করে।


Spring Data JPA সেটআপ

Maven ডিপেনডেন্সি যোগ করা

Spring Data JPA এবং একটি এমবেডেড ডাটাবেস (যেমন H2) ব্যবহার করতে নিচের ডিপেনডেন্সিগুলো pom.xml এ যোগ করুন:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
    <groupId>com.h2database</groupId>
    <artifactId>h2</artifactId>
    <scope>runtime</scope>
</dependency>

Application.properties ফাইলে কনফিগারেশন

Spring Boot অ্যাপ্লিকেশনের ডাটাবেস কনফিগারেশন:

spring.datasource.url=jdbc:h2:mem:testdb
spring.datasource.driver-class-name=org.h2.Driver
spring.datasource.username=sa
spring.datasource.password=password
spring.jpa.database-platform=org.hibernate.dialect.H2Dialect
spring.jpa.show-sql=true
spring.jpa.hibernate.ddl-auto=update

Spring Data JPA এর বেসিক উদাহরণ

Entity ক্লাস তৈরি করা

Spring Data JPA-তে ডেটাবেস টেবিলের সাথে কাজ করতে @Entity অ্যানোটেশন ব্যবহার করে একটি ক্লাস তৈরি করা হয়।

import jakarta.persistence.Entity;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.GenerationType;
import jakarta.persistence.Id;

@Entity
public class Student {
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Long id;
    private String name;
    private String email;

    // Getters and Setters
    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }
}

Repository ইন্টারফেস তৈরি করা

JpaRepository ইন্টারফেস এক্সটেন্ড করে ডেটাবেস অপারেশন সহজে সম্পন্ন করা যায়।

import org.springframework.data.jpa.repository.JpaRepository;
import java.util.List;

public interface StudentRepository extends JpaRepository<Student, Long> {
    List<Student> findByName(String name);
}

সার্ভিস ক্লাস তৈরি করা

@Service অ্যানোটেশন ব্যবহার করে সার্ভিস ক্লাসে ডেটাবেস অপারেশনগুলো ইমপ্লিমেন্ট করা হয়।

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;

@Service
public class StudentService {
    @Autowired
    private StudentRepository repository;

    public List<Student> getAllStudents() {
        return repository.findAll();
    }

    public Student saveStudent(Student student) {
        return repository.save(student);
    }

    public List<Student> getStudentsByName(String name) {
        return repository.findByName(name);
    }
}

Controller ক্লাস তৈরি করা

Spring MVC ব্যবহার করে ডেটা পরিচালনার জন্য একটি REST Controller তৈরি করা হয়।

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

@RestController
@RequestMapping("/students")
public class StudentController {
    @Autowired
    private StudentService service;

    @GetMapping
    public List<Student> getAllStudents() {
        return service.getAllStudents();
    }

    @PostMapping
    public Student addStudent(@RequestBody Student student) {
        return service.saveStudent(student);
    }

    @GetMapping("/search")
    public List<Student> getStudentsByName(@RequestParam String name) {
        return service.getStudentsByName(name);
    }
}

Spring Boot অ্যাপ চালানো

Spring Boot অ্যাপ্লিকেশন চালানোর জন্য @SpringBootApplication অ্যানোটেশন ব্যবহার করা হয়:

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class SpringDataJpaExampleApplication {
    public static void main(String[] args) {
        SpringApplication.run(SpringDataJpaExampleApplication.class, args);
    }
}

টেস্টিং REST API

Spring Boot অ্যাপ চালানোর পরে নিচের পদ্ধতিতে API টেস্ট করতে পারেন:

  • GET /students: সকল ছাত্রের তালিকা রিটার্ন করবে।
  • POST /students: একটি নতুন ছাত্র ডাটাবেসে সংযুক্ত করবে।
    উদাহরণ ইনপুট:

    {
      "name": "John Doe",
      "email": "john.doe@example.com"
    }
    
  • GET /students/search?name=John Doe: নির্দিষ্ট নামের ছাত্রদের রিটার্ন করবে।

সারাংশ

Spring Data JPA স্প্রিং বুটে ডেটাবেস অপারেশন সহজ, দ্রুত এবং কার্যকর করে। এর অটোমেটিক কনফিগারেশন, ডেটা অ্যাক্সেসের সরলীকরণ এবং পুনর্ব্যবহারযোগ্য কোডের সুবিধা ডেভেলপারদের কাজকে আরও মসৃণ করে তোলে।

Content added By
Promotion
NEW SATT AI এখন আপনাকে সাহায্য করতে পারে।

Are you sure to start over?

Loading...